package com.megalith.service;

import com.megalith.dto.ActivityRebackDTO;
import com.megalith.dto.TaskAssignDTO;
import com.megalith.vo.HistoricActivityInstanceEntityVO;
import com.megalith.vo.HistoricTaskInstanceVO;
import com.megalith.vo.Result;
import com.megalith.vo.TaskEntityVO;

import java.util.List;

/**
 * @Description TODO
 * @Author lfp
 * @Date 2022/7/17
 * @Version 1.0
 */
public interface CommonTaskService {
    /**
     *@Description 查询指定流程当前办理节点
     *@Author lfp
     *@Date 2022/7/17
     *@param processInstanceId
     *@Return
     */
    TaskEntityVO queryProcessCurrentTask(String processInstanceId);

    /**
     *@Description 根据个人Id，查询可以认领的任务列表
     *@Author lfp
     *@Date 2022/7/17
     *@param userId
     *@Return
     */
    List<TaskEntityVO> listPersonalCandidateTask(String userId);

    /**
     *@Description 根据流程实例编号，查询历史任务信息
     *@Author lfp
     *@Date 2022/7/17
     *@param processInstanceId
     *@Return
     */
    List<HistoricTaskInstanceVO> queryHistoricTaskInfoList(String processInstanceId);

    /**
     *@Description 根据流程实例编号，查询历史活动信息
     *@Author lfp
     *@Date 2022/7/17
     *@param processInstanceId
     *@Return
     */
    List<HistoricActivityInstanceEntityVO> queryHistoricActivityInfoList(String processInstanceId);

    /**
    *@Description 任务交接（将任务指派给指定人）
    *@Author lfp
    *@Date 2022/7/17
    *@param taskAssignDTO
    *@Return 
    */
    Result assignTaskToOthers(TaskAssignDTO taskAssignDTO);

    void processActivityReback(ActivityRebackDTO rebackDTO);

    /**
    *@Description 查询所有个人待办任务（包含待认领）
    *@Author lfp
    *@Date 2022/7/17
    *@param userId
    *@Return
    */
    List<TaskEntityVO> listPersonalAssignmentTask(String userId);
}
